package com.yixia.pea.utils;

import com.yixia.common.utils.StringUtils;
import com.yixia.pea.domain.credit.PeaCreScore;
import com.yixia.pea.domain.credit.PeaHzBase;
import com.yixia.pea.domain.credit.PeaScore;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author: 依梦
 * @Date 2023/9/6
 *
 * 评分工具表
 */
public class ScoreUtils {


    // 劳动力评分  laderScore  家庭劳动力/人口总数=家庭劳动力占比
    // 占15分
    static public BigDecimal laoDongLiScore(Integer loaders, Integer familySize) {
        // 在这里获取评分标准数据
        double index = ((double) loaders / familySize) * 100.0;
        if(index < 50){
            // 进行折分计算
            return BigDecimal.valueOf((index / 100) * 0.30);
        }else {
            // 满分
            return BigDecimal.valueOf(100 * 0.15);
        }
    }




    // 家庭产业评分 famCyScore   家庭种植业+家庭养殖业+家庭其它收入=家庭现状
    // 满分10
    static public BigDecimal famCyScore(PeaHzBase hzBase) {
        // 在这里获取评分标准数;据
        BigDecimal common = new BigDecimal(0);
        BigDecimal famWuGongIncome = hzBase.getFamWuGongIncome();
        BigDecimal famOtherIncome = hzBase.getFamOtherIncome();
        common = common.add(famWuGongIncome).add(famOtherIncome);

        BigDecimal decimal = new BigDecimal(40000);
        if(common.compareTo(decimal) == -1){
            // 小于20000
            BigDecimal divide = common.divide(decimal);
            return divide.multiply(new BigDecimal(10));
        }
        else {
            return new BigDecimal(10);
        }
    }



    // 家庭人均纯收入评分 famNumScore （家庭收入所有收入-家庭所有支出）/ 家庭总人数=家庭人均纯收入
    // 35
    static public BigDecimal famNumScore(PeaHzBase hzBase) {
        // 收入
        BigDecimal common = new BigDecimal(0);
        common = common.add(hzBase.getFamWuGongIncome()).add(hzBase.getFamOtherIncome()).subtract(hzBase.getShengChanExpend()).subtract(hzBase.getLifeExpend());

        BigDecimal decimal = new BigDecimal(hzBase.getFamilySize());

        BigDecimal divide = common.divide(decimal, RoundingMode.DOWN);

        BigDecimal biaozun = new BigDecimal(2000);
        if(divide.compareTo(biaozun) == -1){
            // 人均收入小于2000
            return (divide.divide(biaozun,  RoundingMode.DOWN)).multiply(new BigDecimal(35));
        }
        else {
            return new BigDecimal(10);
        }
    }


    //  定性评分    dingXinScore 优、良、一般。系统根据对应分值，对评分进行统计，并算出平均分，平均分计入总值。
    // 40
    static public BigDecimal dingXinScore(PeaScore peaScore) {
        // 收入
        // 400
        BigDecimal conmmon = new BigDecimal(0);
        if(peaScore.getGamble().equals("Y") || peaScore.getDrugRelated().equals("Y") || peaScore.getWhoring().equals("Y") || peaScore.getBlack().equals("Y")|| peaScore.getPrivateLending().equals("Y") || peaScore.getOnlineLoan().equals("Y")){
            return conmmon;
        }
        BigDecimal v1 = BigDecimal.valueOf(Double.parseDouble(peaScore.getLoveCountry()));
        BigDecimal v2 = BigDecimal.valueOf(Double.parseDouble(peaScore.getAggresively()));
        BigDecimal v3 = BigDecimal.valueOf(Double.parseDouble(peaScore.getFamilyRship()));
        BigDecimal v4 = BigDecimal.valueOf(Double.parseDouble(peaScore.getInteConcept()));
        conmmon = conmmon.add(v1).add(v2).add(v3).add(v4);
        return conmmon.divide(new BigDecimal(100));
    }

    // 信用评分   creditScore  有涉毒为0 家庭有涉毒等行为，无法参与信用等级评分
    static public BigDecimal creditScore(PeaCreScore creScore) {
        BigDecimal conmmon = new BigDecimal(0);
        conmmon = conmmon.add(creScore.getLaderScore()).add(creScore.getFamCyScore()).add(creScore.getFamNumScore()).add(creScore.getDingXinScore());
        return conmmon;
    }

    // 根据信用评分进行等级测评
    // 信用等级  creditDarge
    static public String creditDanger(PeaCreScore creScore) {

        String creditScore = creScore.getCreditScore();
        double d = new Double(creditScore);

        if(d == 100){
            return "AAAAA";
        }
        else if(d > 90){
            return "AAAA";
        }
        else if(d > 80){
            return "AAA";
        }
        else if(d > 70){
            return "AA";
        }
        else if(d > 60){
            return "A";
        }
        else {
            return "测评不合格！";
        }
    }
}
